/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */

package jp.ize.ux.components;

// {{{ imports
import jp.ize.ux.UXObject;
import jp.ize.ux.UXController;
import jp.ize.ux.UXInteraction;
import jp.ize.ux.states.UXCell;
import jp.ize.ux.states.UXTableState;
import jp.ize.ux.states.UXBasicState;
// }}}
// {{{ 
class UXTableHeaderItem extends UXCell
{
	// {{{ public function new( item : UXLabel ) 
	/**
	 *
	 */
	public function new( item : UXLabel ) 
	{
		super( item );
	}
	// }}}
	// {{{ public var testAttribute(default, default) : UXTextAttribute
	/**
	 * テキストの表示属性です。
	 */
	public var testAttribute(default, default) : UXTextAttribute;
	// }}}
}
// }}}
// {{{ class UXTableViewState extends UXTableState
class UXTableViewState extends UXTableState
{
	// {{{ public function new()
	/**
	 * コンストラクタ。
	 */
	public function new( rows : Int, cols : Int )
	{
		super( rows, cols );
	}
	// }}}
	// {{{ public var headers(default, default) : Array<UXTableHeaderItem>
	/**
	 * 左から順番に表示されるヘッダーの配列です。colsの値と配列の要素の数は一致している必要があります。
	 */
	public var headers(default, default) : Array<UXTableHeaderItem>;
	// }}}
}
// }}}
// {{{ class UXTable extends UXComponent
/**
 * UXTable クラス
 * テーブル上にコンポーネントを配置できるコンポーネント
 *
 * @author		iZE Co., Ltd.<br>
 * @version		$Id$<br>
 */
class UXTable extends UXComponent
{
	// {{{ properties

	private var _state : UXTableViewState;

	// }}}
	// {{{ public var ctrl : UXController<UXTableState>;
	/**
	 * このコンポーネント内でのインタラクションを管理するコントローラークラスのインスタンスです。
	 */
	public var ctrl : UXController<UXTableState>;
	// }}}
	// {{{ public function new()
	/**
	 * コンストラクタです。行数と列数を指定する必要があります。
	 */
	public function new( rows : Int, cols : Int )
	{
		super();
		_state = new UXTableViewState( rows, cols );
	}
	// }}}
	// {{{ public function setBackground( back : UXObject ) : Void
	/**
	 * 背景となるオブジェクトを設定できます。
	 */
	public function setBackground( back : UXObject ) : Void
	{
	}
	// }}}
	// {{{ public function getItem( i : Int, j : Int ) : Null<UXCell>
	/**
	 * (行, 列)の順番で指定された位置のアイテムを取得します。存在しない場合はnullが返されます。　
	 */
	public function getItem( i : Int, j : Int ) : Null<UXCell>
	{
		return null;
	}
	// }}}
	// {{{ public function setItem( i : int; j : Int, item : UXCell )
	/**
	 * (行. 列)の順番で指定された位置に指定されたアイテムを配置します。その位置に既にアイテムが存在する場合には、
	 * 上書きされます。(行, 列)の位置が存在しない場合にはなにもしません。
	 */
	public function setItem( i : Int, j : Int, item : UXCell )
	{
	}
	// }}}	
	// {{{ public function update( updator : UXTableState -> Void ) : Void
	/**
	 * このコンポーネントの状態を直接変更するメソッドです。状態のどんな操作も可能になるので、
	 * このメソッドの使用には注意が必要です。
	 */
	public function update( updator : UXTableState -> Void ) : Void
	{
		updator( _state );
	}
	// }}}
}
// }}}
// {{{ class UXTableInitInteraction extends UXInteraction<UXTableViewState>
/**
 * UXTableInitInteraction クラス<br>
 * デフォルトの初期化インタラクションです。
 */
class UXTableInitInteraction extends UXInteraction<UXTableViewState>
{
}
// }}}
// {{{ class UXTableFocusInteraction extends UXInteraction<UXTableViewState>
/**
 * UXTableFocusInteraction クラス<br>
 * focus/unfocusに対するデフォルトインタラクションです。
 */
class UXTableFocusInteraction extends UXInteraction<UXTableViewState>
{
}
// }}}
// {{{ class UXTableLayoutInteraction extends UXInteraction<UXTableViewState>
/**
 * UXTableLayoutInteraction クラス<br>
 * レイアウト(の変更など)に対するデフォルトインタラクションです。
 */
class UXTableLayoutInteraction extends UXInteraction<UXTableViewState>
{
}
// }}}
// {{{ class UXTableResizeInteraction extends UXInteraction<UXTableState>
/**
 * UXTableResizeInteraction クラス<br>
 * 大きさを変更するデフォルトインタラクションです。
 */
class UXTableResizeInteraction extends UXInteraction<UXTableState>
{
}
// }}}
// {{{ class UXTableEnableInteraction extends UXInteraction<UXTableState>
/**
 * UXTableEnableInteraction クラス<br>
 * 有効/無効を切り替えるデフォルトインタラクションです。
 */
class UXTableEnableInteraction extends UXInteraction<UXTableState>
{
}
// }}}
// {{{ class UXTableVisibilityInteraction extends UXInteraction<UXTableState>
/**
 * UXTableVisibilityInteraction クラス<br>
 * 表示/非表示に対するインタラクションです。
 */
class UXTableVisibilityInteraction extends UXInteraction<UXTableState>
{
}
// }}}
